﻿//****************************************************
//Archivo: Validations.js
//  Autor: I.S.C. Armando Rosales Maza
//  Fecha: 25/07/2015
//****************************************************

/***************************************************
Función para deshabilitar los comandos de copiar, 
pegar y cortar para un campo de entrada.
***************************************************/
$('.DisableCopyPasteCut').bind('copy paste cut', function (e) {
    e.preventDefault();
});

/***************************************************
Función que valida si la tecla es: Retroceso, 
Tabulador, Enter, Escape, <-- , --> , ó Suprimir.
***************************************************/
function isSpecialKey(key) {
    try {
        var specialKeys = [8, 9, 13, 27, 37, 39, 127];

        if ($.inArray(key, specialKeys) == 0)
            return true;
        else
            return false;
    }
    catch (Exception) {
        return false;
    }
};

/***************************************************
Función para que en los campos de entrada solo se 
permita escribir números.
***************************************************/
$('.Number').on('keypress', function (e) {
    try {
        var key = e.keyCode || e.which;
        var character = String.fromCharCode(key);

        if (isSpecialKey(key))
            return true;
        else
            return character.match(/[0-9]/) ? true : false;
    }
    catch (Exception) {
        return false;
    }
});

/***************************************************
Función para que en los campos de entrada solo se 
permita escribir números con signo.
***************************************************/
$('.NumberWithSign').on('keypress', function (e) {
    try {
        var key = e.keyCode || e.which;
        var character = String.fromCharCode(key).toLowerCase();

        if (isSpecialKey(key))
            return true;
        else if (key == 43 || key == 45) {
            if ($.inArray('+', $(this).val()) == 0 || $.inArray('-', $(this).val()) == 0)
                return false;
            else {
                if ($(this).val() == '')
                    $(this).val((key == 43) ? '+' : '-');
                else
                    $(this).val((key == 43) ? '+' + $(this).val() : '-' + $(this).val());

                return false;
            }
        }
        else
            return character.match(/[0-9]/) ? true : false;
    }
    catch (Exception) {
        return false;
    }
});

/***************************************************
Función para que en los campos de entrada solo se 
permita escribir números decimales.
***************************************************/
$('.DecimalNumber').on('keypress', function (e) {
    try {
        var key = e.keyCode || e.which;
        var character = String.fromCharCode(key);

        if (isSpecialKey(key))
            return true;
        else if (key == 46)
            return ($.inArray('.', $(this).val()) >= 0) ? false : true;
        else
            return character.match(/[0-9]/) ? true : false;
    }
    catch (Exception) {
        return false;
    }
});

/***************************************************
Función para que en los campos de entrada solo se 
permita escribir números decimales con signo.
***************************************************/
$('.DecimalNumberWithSign').on('keypress', function (e) {
    try {
        var key = e.keyCode || e.which;
        var character = String.fromCharCode(key);

        if (isSpecialKey(key))
            return true;
        else if (key == 43 || key == 45) {
            if ($.inArray('+', $(this).val()) == 0 || $.inArray('-', $(this).val()) == 0)
                return false;
            else {
                if ($(this).val() == '')
                    $(this).val((key == 43) ? '+' : '-');
                else
                    $(this).val((key == 43) ? '+' + $(this).val() : '-' + $(this).val());

                return false;
            }
        }
        else if (key == 46)
            return ($.inArray('.', $(this).val()) >= 0) ? false : true;
        else
            return character.match(/[0-9]/) ? true : false;
    }
    catch (Exception) {
        return false;
    }
});

/***************************************************
Función para que en los campos de entrada solo se 
permita escribir nombres (letras de la a-z con o sin 
acentos y espacios).
***************************************************/
$('.Name').on('keypress', function (e) {
    try {
        var key = e.keyCode || e.which;
        var character = String.fromCharCode(key).toLowerCase();

        if (isSpecialKey(key) || key == 32)
            return true;
        else
            return (character.match(/[a-zñáéíóú]/)) ? true : false;
    }
    catch (Exception) {
        return false;
    }
});

/***************************************************
Función para que en los campos de entrada solo se 
permita escribir valores alfanuméricos(letras, 
números y espacios en blanco).
***************************************************/
$('.Alphanumeric').on('keypress', function (e) {
    try {
        var key = e.keyCode || e.which;
        var character = String.fromCharCode(key).toLowerCase();

        if (isSpecialKey(key) || key == 32)
            return true;
        else if (character.match(/[a-zñ]/) || character.match(/[0-9]/))
            return true;
        else
            return false;
    }
    catch (Exception) {
        return false;
    }
});
